package com.ltu.util.security;

import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Md5Util {
	/**利用MD5进行加密
     * @param str  待加密的字符串
     * @return  加密后的字符串
     * @throws NoSuchAlgorithmException  没有这种产生消息摘要的算法
     * @throws UnsupportedEncodingException  
     */
    public static String encoderByMd5(String str){
   	 	MessageDigest md =null;
    	 try {
    		 // 生成一个MD5加密计算摘要
    		  md = MessageDigest.getInstance("MD5");
    		 // 计算md5函数
    		 md.update(str.getBytes());
    		 // digest()最后确定返回md5 hash值，返回值为8为字符串。因为md5 hash值是16位的hex值，实际上就是8位的字符
    		 // BigInteger函数则将8位的字符串转换成16位hex值，用字符串来表示；得到字符串形式的hash值
    		 str=new BigInteger(1, md.digest()).toString(16);
    		
    		 } catch (Exception e) {
    			 e.printStackTrace();
    		
    		 }
    	 return  str;
    }

	public static String encodePassword(String originStr) {
    	String md5Str1 = Md5Util.encoderByMd5(originStr).toUpperCase();
    	return Md5Util.encoderByMd5(md5Str1).toUpperCase();
	}
}
